定義函式的方法
只要變數有宣告就不會產生錯誤,但是在變數宣告之前就使用該變數就會導致
變數提升現象產生,所謂變數提升(Hoisting)意即把宣告的語法拉到最上面,以下面這段 code 為例就是只把 var a
放到function 第一行。
只宣告變數而沒有賦值,代表什麼都沒有那就只會是 undefined。
因此使用任何變數之前都應該先宣告。
function plusOne (){
a+1
var a = 10
}
plusOne(a) // undfined
變數的有效範圍是以 function 來區分範圍var name
在 function 內外分別帶表不同字串,
var name = 'Steve'
function changeName () {
var name = 'Bob';
console.log(name);
}
changeName(name); // 'Bob'
console.log(name); // 'Steve'
兩者之間的主要差異在於 var
會變數提升 (Hoisting),以及
而 let
不會,而且 let
不允許變數重複命名,另一個差別是 let
是由 {}
分開作用域,var
是由 function 區分。
沒有先宣告變數 let
會產生的錯誤訊息
Uncaught ReferenceError: Cannot access 'name' before initialization
function naming() {
console.log(name);
let name = 'Ken';
}
naming(name); // Uncaught ReferenceError: Cannot access 'name' before initialization